package com.heima.mvplibrary.base;


import android.os.AsyncTask;
import android.os.Handler;
import android.text.PrecomputedText;

import com.heima.mvplibrary.data.AppResult;
import com.orhanobut.logger.Logger;


public class BaseAsyncTask extends AsyncTask<String, Integer, AppResult> {


    // 方法1：onPreExecute（）
    // 作用：执行 线程任务前的操作
    // 注：根据需求复写
    @Override
    protected void onPreExecute() {
        Logger.i("onPreExecute");
    }

    // 方法2：doInBackground（）
    // 作用：接收输入参数、执行任务中的耗时操作、返回 线程任务执行的结果
    // 注：必须复写，从而自定义线程任务
    @Override
    protected AppResult doInBackground(String... strings) {
        // 自定义的线程任务
//        Handler handler = new Handler();
//        handler.postDelayed(new Runnable() {
//            private int i=0;
//            @Override
//            public void run() {
//                publishProgress(i++);
//                handler.postDelayed(this, 1000);
//            }
//        }, 0);
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        Logger.i("doInBackground："+strings[0]);
        // 可调用publishProgress（）显示进度, 之后将执行onProgressUpdate（）
        return  new AppResult(true,"执行成功！");
    }

    // 方法3：onProgressUpdate（）
    // 作用：在主线程 显示线程任务执行的进度
    // 注：根据需求复写
    @Override
    protected void onProgressUpdate(Integer... values) {
        Logger.i("onProgressUpdate"+values[0]);
        super.onProgressUpdate(values);
    }


    // 方法4：onPostExecute（）
    // 作用：接收线程任务执行结果、将执行结果显示到UI组件
    // 注：必须复写，从而自定义UI操作
    @Override
    protected void onPostExecute(AppResult appResult) {
        Logger.i("onPostExecute");

        super.onPostExecute(appResult);
        // UI操作
    }

    // 方法5：onCancelled()
    // 作用：将异步任务设置为：取消状态
    @Override
    protected void onCancelled() {
        Logger.i("onCancelled");
    }
}
